import express from 'express'
import cors from 'cors'
import bodyParser from 'body-parser'
import { initDatabase } from './config/db.js'
import userRoutes from './routes/userRoutes.js'
import interactionRoutes from './routes/interactionRoutes.js'
import adminRoutes from './routes/adminRoutes.js'
import { initAdminPassword } from './controllers/adminController.js'

// 初始化Express应用
const app = express()
const PORT = process.env.PORT || 3000

// 中间件
// 配置CORS
app.use((req, res, next) => {
  // 获取请求的Origin
  const origin = req.headers.origin
  // 设置允许的Origin为请求的Origin
  if (origin) {
    res.setHeader('Access-Control-Allow-Origin', origin)
  }
  // 允许凭证
  res.setHeader('Access-Control-Allow-Credentials', 'true')
  // 允许的请求方法
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
  // 允许的请求头
  res.setHeader(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept, Authorization',
  )

  // 处理预检请求
  if (req.method === 'OPTIONS') {
    return res.sendStatus(200)
  }

  next()
})
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

// 路由
app.use('/api/user', userRoutes)
app.use('/api/interaction', interactionRoutes)
app.use('/api/admin', adminRoutes)

// 后台静态文件（如果需要）
app.use('/admin', express.static('admin'))

// 根路径处理
app.get('/', (req, res) => {
  res.json({ message: '中国非物质文化遗产API服务器' })
})

// 初始化数据库和启动服务器
async function startServer() {
  try {
    // 先初始化数据库
    await initDatabase()
    console.log('数据库表初始化成功')

    // 然后初始化管理员账号
    await initAdminPassword()
    console.log('管理员账号初始化成功')

    // 最后启动服务器
    app.listen(PORT, () => {
      console.log(`服务器运行在 http://localhost:${PORT}`)
    })
  } catch (error) {
    console.error('服务器启动失败:', error)
  }
}

// 启动服务器
startServer()
